//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>
//
//#define MAX_LEN 200005
//
//int main() 
//{
//    int T;
//    scanf_s("%d", &T);
//    while (T--)
//    {
//        char s[MAX_LEN], t[MAX_LEN];
//        scanf_s("%s", s);
//        scanf_s("%s", t);
//        int n = strlen(s);
//        int m = strlen(t);
//        char* res = (char*)malloc(n + 1);
//        strcpy(res, s);
//
//        int j = 0;
//        for (int i = 0; i < n; i++) 
//        {
//            if (j < m) 
//            {
//                if (s[i] == t[j] || s[i] == '?')
//                {
//                    if (s[i] == '?') 
//                    {
//                        res[i] = t[j];
//                    }
//                    j++;
//                }
//            }
//            else
//            {
//                break;
//            }
//        }
//
//        if (j < m) 
//        {
//            printf("NO\n");
//        }
//        else 
//        {
//            for (int i = 0; i < n; i++) 
//            {
//                if (res[i] == '?')
//                {
//                    res[i] = 'a';
//                }
//            }
//            printf("YES\n");
//            printf("%s\n", res);
//        }
//        free(res);
//    }
//    return 0;
//}

#include <stdio.h>
#include <stdlib.h>

int compare(const void* a, const void* b)
{
    return (*(int*)a - *(int*)b);
}

int lower_bound(int* a, int n, int x) 
{
    int left = 0, right = n;
    while (left < right)
    {
        int mid = left + (right - left) / 2;
        if (a[mid] < x)
        {
            left = mid + 1;
        }
        else 
        {
            right = mid;
        }
    }
    return left;
}

int upper_bound(int* a, int n, int x)
{
    int left = 0, right = n;
    while (left < right)
    {
        int mid = left + (right - left) / 2;
        if (a[mid] <= x)
        {
            left = mid + 1;
        }
        else 
        {
            right = mid;
        }
    }
    return left;
}

int main() 
{
    int n, q;
    scanf_s("%d %d", &n, &q);
    int* a = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) 
    {
        scanf_s("%d", &a[i]);
    }

    qsort(a, n, sizeof(int), compare);

    for (int i = 0; i < q; i++) 
    {
        int l, r;
        scanf_s("%d %d", &l, &r);
        int l_index = lower_bound(a, n, l);
        int r_index = upper_bound(a, n, r);
        printf("%d\n", r_index - l_index);
    }

    free(a);
    return 0;
}